📘 Trabajo Práctico: Batido de Ondas (Beat Frequency)

1. Objetivos

  • Comprender el fenómeno de batido de ondas
  • Visualizar la suma de dos señales sinusoidales cercanas en frecuencia
  • Analizar componentes espectrales (suma y diferencia)
  • Validar experimentalmente con RTL-SDR

2. Fundamento Teórico

El batido ocurre al superponer dos señales sinusoidales de frecuencias cercanas:

\([x(t) = \sin(2\pi f_1 t) + \sin(2\pi f_2 t)]\)

Usando identidades trigonométricas:

\(x(t) = 2 \cos\left(2\pi \frac{f_1 - f_2}{2} t\right) \sin\left(2\pi \frac{f_1 + f_2}{2} t\right)\)

👉 Esto muestra que:

  • Hay una portadora en \(( (f_1 + f_2)/2 )\)
  • Modulada por una envolvente de frecuencia \(( |f_1 - f_2|/2 )\)

La frecuencia de batido audible/visible es:

\([f_{batido} = |f_1 - f_2|]\)

📄 Código RMarkdown

Introducción

El fenómeno de batido ocurre cuando dos señales sinusoidales de frecuencias cercanas se superponen, generando una modulación en amplitud observable.

Simulación del Batido

# Parámetros de simulación
fs <- 10000           # frecuencia de muestreo (Hz)
t <- seq(0, 0.5, 1/fs)  # vector de tiempo

f1 <- 50              # frecuencia 1 (Hz)
f2 <- 55              # frecuencia 2 (Hz)

# Generación de señales
s1 <- sin(2*pi*f1*t)
s2 <- sin(2*pi*f2*t)

# Señal resultante (batido)
s <- s1 + s2

Visualización en el tiempo

plot(t, s, type="l", col="black", 
     main="Batido de Ondas (Dominio Temporal)",
     xlab="Tiempo (s)", ylab="Amplitud")

# Agregamos envolvente aproximada
env <- 2*cos(2*pi*(f1-f2)/2*t)

lines(t, env, col="red", lty=2)
lines(t, -env, col="red", lty=2)

👉 Interpretación:

  • La señal negra es la suma
  • Las líneas rojas representan la envolvente (batido)

Visualización de señales individuales

plot(t, s1, type="l", col="blue", ylim=c(-2,2),
     main="Señales individuales",
     xlab="Tiempo", ylab="Amplitud")

lines(t, s2, col="green")
legend("topright", legend=c("f1", "f2"),
       col=c("blue","green"), lty=1)

Análisis espectral (FFT)

# FFT
S <- fft(s)
freq <- seq(0, fs, length.out=length(S))

# Magnitud
mag <- Mod(S)

plot(freq[1:500], mag[1:500], type="l",
     main="Espectro de Frecuencia",
     xlab="Frecuencia (Hz)", ylab="Magnitud")

👉 Aquí se observan dos picos:

  • f1
  • f2

Visualización de la envolvente (frecuencia de batido)

# Demodulación simple (valor absoluto)
env_detected <- abs(s)

plot(t, env_detected, type="l",
     main="Envolvente detectada",
     xlab="Tiempo", ylab="Amplitud")

Parte Experimental

Equipamiento

  • RTL-SDR V3
  • Handy Baofeng UVR5
  • Antena VHF/UHF
  • PC con R y SDR#

Procedimiento

  1. Configurar el handy en transmisión continua (tono o portadora)

  2. Usar una segunda fuente (otro handy o generador)

  3. Ajustar frecuencias cercanas:

    Ejemplo:

    • f1 = 145.500 MHz
    • f2 = 145.505 MHz
  4. Capturar señal con RTL-SDR

Observación esperada

  • En SDR#: dos picos cercanos
  • En audio: pulsación (batido)
  • En R: procesar IQ para ver envolvente

Procesamiento opcional de datos RTL-SDR en R

# Ejemplo conceptual (requiere datos IQ reales)
# library(signal)

# iq <- readBin("iq_samples.bin", what="numeric", n=1e6)
# env <- Mod(iq)

# plot(env, type="l")

Conclusiones


---

## 4. Sugerencias prácticas (muy importantes)

### 💡 Para que el experimento funcione bien:

- Usar **frecuencias MUY cercanas (1–10 kHz diferencia)**
- En VHF podés usar:
  - 145.500 MHz y 145.501 MHz → batido de 1 kHz
- Con el RTL-SDR V3 podés:
  - visualizar espectro
  - escuchar batido en audio (modo NFM)

---

## 5. Idea didáctica potente (te la recomiendo)

Hacé esto en clase:

1. Mostrar simulación en R  
2. Luego mostrar en SDR en vivo  
3. Preguntar:  
   👉 *¿Dónde está el batido en el espectro?*  

Respuesta:
- **NO está como pico**
- Está en la **envolvente temporal**

Ese “click conceptual” es oro para estudiantes.

---